//
// Created by ailoc on 2023/10/21.
//

#ifndef FA_LEARNING_DTM_H
#define FA_LEARNING_DTM_H

#include <string>
#include "mvd.h"
#include "tape.h"
#include "rulebook.h"

class DTM {
private:
    std::string current_state;
    char current_char;
    RuleBook ruleBook;
    Tape tape;
public:
    DTM(RuleBook ruleBook,Tape tape);
    auto execute() -> void;
    auto move_tape_head(mvd direction) -> bool;
    auto write_char(char new_char) -> void;

    const std::string &getCurrentState() const;
};


#endif //FA_LEARNING_DTM_H
